<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>String方法</title>
</head>
<body>
    <script>
        var str = '不要学编程，一定不要学编程，String方法。';
        var str0 = '23300';
        var str01 = 'Hello';
        var str02 = 'HELLO';
        // charAt()：返回在指定位置的字符串。
        var str1 = str.charAt(4);   // 程
        // charCodeAt()：返回在指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
        var str2 = str.charCodeAt(4);   //31243
        // concat()：连接两个或多个字符串，返回一个新的字符串。
        var str3 = str.concat(str0);    //不要学编程，一定不要学编程，String方法。23300
        // endsWith()：判断当前字符串是否以指定的后缀字符串结尾，返回布尔值。
        var str4 = str.endsWith('方法');    //false
        var str5 = str.endsWith('String方法。');    //true
        // fromCharCode()：将 Unicode 编码转为一个字符。
        var str6 = String.fromCharCode(31243);  // 程
        // indexOf()：返回某个指定的子字符串在字符串中首次出现的位置，如果没有找到匹配的字符串则返回-1。
        var str7 = str.indexOf('编程');   //3
        var str8 = str.indexOf('编程');   //3
        var str9 = str.indexOf('mmm');   //-1
        // match()：查找到一个或多个正则表达式的匹配项，返回一个数组，如果没有找到任何匹配的文本，则返回 null。
        var str10 = str.match('一定')   //['一定', index: 6, input: '不要学编程，一定不要学编程，String方法。', groups: undefined]
        var str11 = str.match('定一')   //null
        // repeat()：复制字符串指定次数，并将它们连接在一起返回，返回值是一个新的字符串。
        var str12 = str0.repeat(3);
        // replace() ：替换与正则表达式匹配的子字符串，返回一个新的字符串。只能替换第一个匹配项。若需替换多个可多次调用。
        var str13 = str.replace('编程','JAVASCRIPT');   //不要学JAVASCRIPT，一定不要学编程，String方法。
        // 正则表达式中，i表示忽略大小写，g表示全局匹配。
        var str130 = str.replace(/编程/gi,'正则表达式替换');    //不要学正则表达式替换，一定不要学正则表达式替换，String方法。
        // replaceAll()：在字符串中查找匹配的子串，并替换与正则表达式匹配的所有子串。返回一个新字符串。
        var str14 = str.replaceAll('编程','JAVASCRIPT');    //不要学JAVASCRIPT，一定不要学JAVASCRIPT，String方法。
        // search()：搜索与正则表达式相匹配的值，返回匹配的位置索引，如果没有找到任何匹配的值，则返回-1。
        var str15 = str.search('编程')  //3
        var str16 = str.search('一定')  //6
        var str17 = str.search('定一')  //-1
        // slice()：提取字符串的某个部分，并返回一个新的字符串，且不会改动原字符串。左开右闭
        var str18 = str.slice(6,13);  //一定不要学编程
        // split()：将字符串分割成字符串数组，返回一个字符串数组对象。
        // 如果指定第二个参数 maxsplit，则返回的子字符串不会多于这个参数指定的数组的大小。如果没有指定 maxsplit 参数，整个字符串都会被分割，不考虑它的长度。
        var str19 = str.split('，');    //['不要学编程', '一定不要学编程', 'String方法。']
        // startsWith()：查看字符串是否以指定子字符串开头，返回布尔值。
        var str20 = str.startsWith('不');   //true
        var str21 = str.startsWith('yao不');   //false
        // substring()：提取字符串中介于两个指定下标之间的字符。返回一个新的字符串，且不会改动原字符串。左开右闭
        //第一个参数为起始位置，第二个参数为截取长度。如果省略第二个参数，那么返回的子字符串会一直到字符串的结尾。
        var str22 = str.substr(6,7);  //一定不要学编程
        // substring()：提取字符串中介于两个指定下标之间的字符。返回一个新的字符串，且不会改动原字符串。左闭右开
        //第一个参数为起始位置，第二个参数为截取长度。如果省略第二个参数，那么返回的子字符串会一直到字符串的结尾。
        var str23 = str.substring(0,6);  //一定不要学编程
        // toLowerCase()：把字符串转换为小写
        var str24 = str02.toLowerCase();    //hello
        // toUpperCase()：把字符串转换为大写
        var str25 = str01.toUpperCase();    //HELLO
        // valueOf()：返回一个字符串的原始值
        var str26 = str.valueOf('true');
        // toString()：返回一个字符串
        var str27 = str.toString();


        
        console.log(str25); 
    </script>
</body>
</html>